package String;

import java.util.Scanner;

/*
    String和StringBuilder区别：
        StringBuilder是一个可变的字符串类，对象中的内容是可变的
        String中内容是不可变的

    StringBuilder构造方法：
        public StringBuilder():创建一个空白可变字符串对象，不含有任何内容
        public StringBuilder(String str):根据字符串内容，创建可变字符串对象

    StringBuilder添加和反转方法：
        public StringBuilder append(任意类型);添加数据，并返回对象本身
        public StringBuilder reverse();返回相反的字符序列

    由于StringBuilder添加和反转方法，String中无法使用，需要将二者相互转换
    1.StringBuilder转换为String
        public String toString():通过toString方法就可以实现把StringBuilder转换为String
    2.String转换为StringBuilder
        public StringBuilder(String str)：通过构造方法，就可以实现把把String转换为StringBuilder

 */
public class StringBuilderDemo {
    public static void main(String[] args) {
        //StringBuilder构造方法：
        //public StringBuilder():创建一个空白可变字符串对象，不含有任何内容
        StringBuilder sb=new StringBuilder();
        System.out.println("sb:"+sb);
        System.out.println("sb.length():"+sb.length());
        //public StringBuilder(String str):根据字符串内容，创建可变字符串对象
        StringBuilder sb2=new StringBuilder("hello");
        System.out.println("sb2:"+sb2);
        System.out.println("sb2.length():"+sb2.length());

        //StringBuilder添加和反转方法：
        //public StringBuilder append(任意类型);添加数据，并返回对象本身
        StringBuilder sb3=new StringBuilder();
        StringBuilder sb4=sb3.append("hello");
        System.out.println("sb3:"+sb3);//hello
        System.out.println("sb4:"+sb4);//hello
        System.out.println(sb3==sb4);//true

        StringBuilder sb5=new StringBuilder();
//        sb5.append("hello");
//        sb5.append(" ");
//        sb5.append("java");
//        sb5.append(555);
//        sb5.append(66.666);
        //链式编程
        sb5.append("hello").append(" ").append("java").append(555).append(66.666);
        System.out.println("sb5:"+sb5);//sb5:hello java55566.666

        //public StringBuilder reverse();返回相反的字符序列
        sb5.reverse();
        System.out.println("sb5:"+sb5);//sb5:666.66555avaj olleh

        //StringBuilder转换为String
        StringBuilder sb6=new StringBuilder();
        sb6.append("hello");
        //String s=sb6;错误
        String s=sb6.toString();
        System.out.println(s);

        //String转换为StringBuilder
        String s2="hello";
        StringBuilder sb7=new StringBuilder(s2);
        System.out.println(sb7);

        //拼接字符串
        int[] arr={1,2,3};
        String s3 = arrayToString(arr);
        System.out.println(s3);

        //字符串反转
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String line = sc.nextLine();

        String s4 = myReverse(line);
        System.out.println(s4);

    }

    public static String arrayToString(int[] arr){
        //在方法中用StringBuilder按照要求拼接，并把结果转化为string
        StringBuilder sb=new StringBuilder();
        sb.append("[");
        for (int i=0;i<arr.length;i++){
            if(i==arr.length-1){
                sb.append(arr[i]);
            }else{
                sb.append(arr[i]).append(",");
            }
        }
        sb.append("]");
        String s=sb.toString();
        return s;
    }

    public static String myReverse(String s){
//        StringBuilder sb=new StringBuilder(s);
//        sb.reverse();
//        String ss=sb.toString();
//        return ss;
        return new StringBuilder(s).reverse().toString();
    }
}
